ARAL使用说明
修订日期 | 修订版本 | 修订内容 | 修订人 |
---|---|---|---|
2021.06.20 | v0.1 | 初始化文档 | 刘刚 |
2023.07.21 | v0.2 | 增加算法功能列表 | 刘刚 |
[TOC]
ARAL是一个灵活, 高效且可扩展性强的机器人算法库. 以C++为基础, 使用了大量的C++11/17特性, 不依赖于第三方算法库。主要包括建模、规划和控制三部分, 具体可分为基础数学、刚体建模、运动学、动力学、标定辨识、运动规划、轨迹规划、运动控制、力控制等模块。
aral以基础算法平台为发展目标,旨在配合遨博控制器软件,快速、有效的为遨博产品的更新迭代提供灵活的算法支持。
ARAL: 读音: [ˈɑrɑl], 是 Aubo Robot Algorithm Library 的缩写
文档命名规则
aral算法库开发文档命名前缀规则如下:
1.*. 为 aral 相关文档
2.*. 为建模相关文档
3.*. 为规划相关文档
4.*. 为控制相关文档
5.*. 为其他应用文档
目录及层次定义
. 算法开发环境根目录
├── aubo_description(机械臂描述文件)
│ ├── meshes(机械臂3D几何体文件)
│ │ └── aubo_i5 (具体的机械臂)
│ │ ├── collision(碰撞几何体)
│ │ └── visual(显示几何体)
│ └── urdf(机械臂URDF文件和SRDF文件)
├── include (用户接口头文件)
│ └── aral (接口申明、基础数据类型定义、返回值说明)
├── lib (用户开发库 64位)
├── lib32 (用户开发库 32位)
└── resources (用户开发可能用到的资源文件)
开发库的下载地址为: http://mirrors.aubo-robotics.cn:8001/deploy/
更多文档可以参考算法部文档集
版本定义
示例: 0.0.8+2107061032.001cbf4
由版本号,编译时间, git HEAD组成
版本类型
有两种算法库可以给用户使用,一种名为 aral_basic, 该库比较轻量,用户可以直接使用由 ARAL_API_BASIC
标注的接口.
另外一种算法库名为 aral, 该库涵盖所有功能
目前两种算法库均无外部依赖.
接口函数返回状态定义
对于返回值是int类型的接口函数, 一般这样规定
返回值 = 0(E_NO_ERROR): 函数运行成功, 正常返回
返回值 < 0: 函数计算或者执行失败, 在算法库中一般会打印具体的错误信息. 如果需要向上抛错误信息, 可以调用以下接口:
const std::string GetErrDescription(const int errCode);
返回值 > 0: 程序处于某种特殊状态, 如运行到轨迹终点; 算法退化. 一般如果处于这种情况, 程序能继续执行. 具体的返回值及错误描述在return_value_definition.hpp中定义.
32位库可能会遇到的问题
为保证算法库的编译和运行环境一致, 在链接aral算法库时需要同时链接标准c++库(如libstdc++.so.6.0.28)
目前在32位库中, 可能引起Eigen对齐问题的原因没有找全, 为了保证库的稳定性, 现在的解决办法是直接对Matrix,Array,Quaternion等对象使用DontAlign属性来忽略对齐问题, 这样可以完全禁用向量化, 但会牺牲一部分效率.
算法库实例生成
/**
* @brief 创建机器人算法库实例
* @param model:机器人对应的URDF描述文件
* @param config:通过配置文件创建不同的特性(reserved)
* @return 算法库实例指针,如果失败,返回 nullptr
* ARAL算法库文件可以通过dlopen在运行时打开, 通过调用CreateRLIntfacePtr函数得到基类接口指针
*/
ARAL::RLIntfacePtr CreateARALIntfacePtr(const std::string& model, const std::string& config = "");
/**
* @brief 创建机器人算法库实例(后续需要调用rlInitial来初始化该实例)
* @return 算法库实例指针. 如果失败, 返回 nullptr
*/
ARAL::interface::ARALIntfacePtr CreateARALIntfacePtr();
可以同时生成多个实例, 支持以插件的形式动态加载算法库.